/*
 * SerialSession.h
 *
 * @author Bematech S.A.
 */

#ifndef __BILBAO_PROTOCOL_SERIAL_SERIAL_SESSION_CLASS_H__
#define __BILBAO_PROTOCOL_SERIAL_SERIAL_SESSION_CLASS_H__

#include "bilbao/types.h"
#include "bilbao/protocol/serial/ASerialResponse.h"
#include "bilbao/util/Queue.h"

namespace bilbao
{
	namespace protocol
	{
		namespace serial
		{
			class SerialSession
			{
			public:
				/**
				 * Destrutor
				 */
				virtual ~SerialSession( void );

				/**
				 *
				 */
				static SerialSession* getInstance( void );

				/**
				 *
				 */
				ASerialResponse::E_SERIAL_RESPONSE_ID querySerialSession( long int serialSession );

				/**
				 *
				 */
				void setSerialSession( long int serialSession, ASerialResponse::E_SERIAL_RESPONSE_ID state );

				/**
				 *
				 */
				bool addSerialSession( long int serialSession );

			protected:
				/**
				 *
				 */
				SerialSession( void );

				/**
				 *
				 */
				static SerialSession* _instance;

				/**
				 *
				 */
				//bilbao::util::Queue< long int > _queueSerialSession;

			};
		} // namespace serial
	} // namespace protocol
} // namespace bilbao


#endif // __BILBAO_PROTOCOL_SERIAL_SERIAL_SESSION_CLASS_H__
